A goal of computing is to provide information to people. Assuming that a person uses a computing device to access information, competing factors can bear on how and when information should be presented. For example, a user's goals may vary according to how much time is available, what activity the user is engaged in, the importance of available information, etc. The amount and type of information that is available and the frequency at which it becomes available can vary significantly. Moreover, computing devices that display information have a wide range of power capabilities, computing capacity, display size, and types of input devices. A given piece of information could potentially be destined for a small device worn on a wrist and a device with a large display in a building lobby.
To accommodate the variety and complexity of information presentation factors, software developers have designed different types of notification mechanisms or notification surfaces. For example, many operating systems or graphical user shells provide different notification surfaces for different contexts. For instance, a lock screen or login screen might have a notification surface, a “home” or “start” screen for launching applications might have icons capable of displaying notifications or information about them, a tool or status bar might have a user interface element that can be activated to display notifications, or a “toast” notification surface might be provided. In any case, these kinds of notification surfaces often have different sizes, consume different types or formats of information, implement different semantics, and are interfaced through different application programming interface (API) or protocols.
The inventors alone have realized that it is becoming difficult for developers to write software that can take advantage of the variety of notification surfaces available on different platforms. The inventors have appreciated that a developer writing software to disseminate a single item of information might currently need to write many sections of code, each customized for respective notification surfaces. In addition, if a single item of notification information is intended to be displayed by multiple notification surfaces of a same device, multiple notification messages of varying content and format might need to be transmitted, resulting in duplicative transmission of the same item of information, possibly resulting in multiple process “wake ups” and other overhead at the receiving device. Consequently, the inventors alone have realized that providing a universal notification mechanism on a computing device can potentially ease some of the problems related to the proliferation of notification surfaces.